#ifndef MarkerItem_First
#define MarkerItem_First
#ifdef __GNUG__
#pragma interface
#endif

#include "TextMarks.h"
#include "Command.h"

//---- MarkerItem --------------------------------------------------------------

class MarkerItem : public VisualMark {
public:
	MetaDef(MarkerItem);
	MarkerItem(const char *name, const char *type);
	~MarkerItem();

	void Draw(const Point &p, const Rectangle &clip, const Rectangle &lr, bool border);

	const char *Name()
		{ return name; }
	const char *Type()
		{ return type; }
	void SetName(const char *name);
	void SetType(const char *type);

	//---- printing
	OStream& PrintOn(OStream&);
	IStream& ReadFrom(IStream&);

private:
	char *name, *type;
};

//---- ChangeMarkerCommand -----------------------------------------------------

class ChangeMarkerCommand: public Command {
	MarkerItem *item;
	char *newName, *oldName;
	char *newType, *oldType;
public:
	ChangeMarkerCommand(const char *cmd, int cmdNo, MarkerItem *item,
				const char *newName, const char *newType);
	~ChangeMarkerCommand();
	void DoIt();
	void UndoIt();
};

#endif
